// Declaración de paquete
package org.japo.java.entities;

// Importaciones
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.io.Serializable;

// Cabecera de la clase
public class Persona implements Serializable {

    // Identificadores de propiedades
    public static final String PROP_NOMBRE = "nombre";
    public static final String PROP_EDAD = "edad";
    public static final String PROP_FECHA = "fecha";

    // Propiedades
    private String nombre;
    private int edad;
    private java.util.Date fecha;

    // PropertyChangeSupport
    private final transient PropertyChangeSupport propertyChangeSupport = new java.beans.PropertyChangeSupport(this);

    // Accesores
    public void setNombre(String nombre) {
        String oldNombre = this.nombre;
        this.nombre = nombre;
        propertyChangeSupport.firePropertyChange(PROP_NOMBRE, oldNombre, nombre);
    }

    public String getnombre() {
        return nombre;
    }

    public void setEdad(int edad) {
        int oldEdad = this.edad;
        this.edad = edad;
        propertyChangeSupport.firePropertyChange(PROP_EDAD, oldEdad, edad);
    }

    public int getedad() {
        return edad;
    }

    public void setFecha(java.util.Date fecha) {
        java.util.Date oldFecha = this.fecha;
        this.fecha = fecha;
        propertyChangeSupport.firePropertyChange(PROP_FECHA, oldFecha, fecha);
    }

    public java.util.Date getfecha() {
        return fecha;
    }

    // Soporte para listeners
    public void addPropertyChangeListener(PropertyChangeListener listener) {
        propertyChangeSupport.addPropertyChangeListener(listener);
    }

    public void removePropertyChangeListener(PropertyChangeListener listener) {
        propertyChangeSupport.removePropertyChangeListener(listener);
    }
}
